#include <iostream>
#include <algorithm>

using namespace std;
const int N = (int)1e5 + 10;

typedef unsigned long long LL;

const LL INF = (LL)1e16;
// 很容易发现，其不愉快度对应于其时间时一个单缝函数
// 课程出分时间只取决于最晚出来的课程
// 所以可以枚举最晚出分的时间来求得最大值
// 优化，可以使用三分的方法求最大值

LL A, B, C, n, m;
LL t[N], b[N];

LL teach(int p)
{
	LL fast = 0, low = 0;
	for (int i = 1; i <= m; ++i)
		if (b[i] < p)
			fast += p - b[i];
		else
			low += b[i] - p;
	// 如果A的代价更小，优先用A补齐
	// 反之优先用B
	if (A < B)
		return min(fast, low) * A + (low - min(fast, low)) * B;
	else
		return low * B;
}

LL stu(int p)
{
	LL ans = 0;
	for (int i = 1; i <= n; ++i)
		if (p > t[i])
			ans += (p - t[i]) * C;
	return ans;
}


int main()
{
	cin >> A >> B >> C >> n >> m;
	// 学生的希望时间
	int min_t = N;
	for (int i = 1; i <= n; ++i)
	{
		cin >> t[i];
		min_t = min(min_t, (int)t[i]);
	}
	// 课程的公布时间
	for (int i = 1; i <= m; ++i)
		cin >> b[i];
	int l = 0, r = N;
	if (C >= INF)
	{
		cout << teach(min_t) << endl;
		return 0;
	}
	while ((r - l) > 2)
	{
		int mid1 = l + (r - l) / 3, mid2 = r - (r - l) / 3;
		LL ans_mid1 = teach(mid1) + stu(mid1);
		LL ans_mid2 = teach(mid2) + stu(mid2);
		if (ans_mid1 > ans_mid2) l = mid1;
		else r = mid2;
	}
	LL ans = (LL)1e16;
	for (int i = l; i <= r; ++i)
		ans = min(ans, teach(i) + stu(i));
	cout << ans << endl;
	return 0;
}